package com.ewiqi.springsecuritydemo.dao;

import com.baomidou.mybatisplus.core.mapper.Mapper;
import com.ewiqi.springsecuritydemo.model.User;

import java.util.List;

/**
 * @author fengyu.zhang
 * @date 2021/1/19 11:43 上午
 */
public interface UserDao extends Mapper<User> {
    /**
     * 新增用户
     *
     * @param user 用户
     * @return ID
     */
    int insert(User user);

    /**
     * 更新用户
     *
     * @param user 用户
     */
    void update(User user);

    /**
     * 删除用户
     *
     * @param id ID
     */
    void delete(int id);

    /**
     * 按ID查找用户
     *
     * @param id ID
     * @return 用户
     */
    User findById(int id);

    /**
     * 按ID查找用户，包含角色和权限列表
     *
     * @param id ID
     * @return 用户
     */
    User findWithRoleAndPermissionById(int id);

    /**
     * 返回所有用户
     *
     * @return 用户列表
     */
    List<User> load();

    /**
     * 通过用户名查找用户，包含角色和权限列表
     *
     * @param username  用户名
     * @return  用户
     */
    User findWithRoleAndPermissionByUsername(String username);
}
